
public class Liczba {			// getmessage wyklad 3

	private int n;
	
	public static String[] cyfry={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
	
	Liczba() {
		this.n=0;
	}
	Liczba(int n) {
		this.n=n;	
	}

	Liczba(String n, int podstawa) throws LiczbaException { // konwersja stringa o zadanej podstawie do liczby naturalnej w systemie dziesietnym 		
		int wynik=0;
		if(podstawa<=1 || podstawa >16) throw new LiczbaException(" to zle wprowadzone dane!");
		for(int i=n.length()-1;i>=0;i--) {
			for(int j=0;j<podstawa;j++) {
				if((String.valueOf(n.charAt(i))).equals(cyfry[j])) {
					wynik=wynik+j*(int)Math.pow(podstawa,(n.length())-1-i);
					break;
				}
				if(j==podstawa-1) throw new LiczbaException(" to zle wprowadzone dane!");
			}
		}
		this.n=wynik;
	}

	public String zapis(int podstawa) throws LiczbaException {
		int liczba=this.n;
		int i=0;
		int cyfra;
		String wynik = "";
		if(podstawa<=1 || podstawa>16) throw new LiczbaException(" to zle wprowadzone dane!");
		if(liczba==0) wynik="0";
		while(liczba>=(int)Math.pow(podstawa,i))
			i++;
		i--;			
		while(liczba>0) {
			if((int)Math.pow(podstawa,i)<=liczba) {
				cyfra=liczba/(int)Math.pow(podstawa,i);
				wynik=wynik+cyfry[cyfra];
				liczba=liczba%(int)Math.pow(podstawa,i);
			}
			else
				wynik=wynik+"0";	
			i--;
			if(liczba==0) {
				while(i>=0) {
					wynik=wynik+"0";
					i--;
				}
				break;
			}
		}
		return wynik;
	}
}
